Software systems development relies on effective testing to develop systems with efficient, effective performance. Distributed systems in particular rely on careful development techniques, as they often comprise multiple separate-but-interconnected components which present frequent opportunities for performance-damaging bottlenecks. One such example of distributed systems are systems utilizing the Java2 Platform, Enterprise Edition, known generally as J2EE.
J2EE system implementations are very popular, in particular in online business applications. Implementing a system in J2EE allows developers to take advantage of simplified architectures which are based upon known standard components. J2EE's ability to scale to meet business demand, as well as having established development tools, means it is the choice of many businesses.
J2EE, however, does have particular implementation details that affect many systems which utilize it. In particular, J2EE's thread model can introduce delays and scalability issues. And, because many J2EE components are run on java virtual machines (“JVMs”), there are known scalability artifacts introduced from the way these JVMs handle memory management.
Current techniques exist to aid developers in developing and testing J2EE applications. However, existing techniques do not provide facilities for simulating specific J2EE issues and bottlenecks, especially with regard to simulation. As such, these development tools do not provide an ability to efficiently track development and accurately model system performance. Given the popularity of J2EE applications, what is needed is a set of techniques that provide the ability to accurately develop and test J2EE applications, including consideration of J2EE-specific issues.